package com.alan.redis.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

@Configuration
public class RedisConfig {
    @Bean
    public JedisPoolConfig jedisPoolConfig(){
        JedisPoolConfig config = new JedisPoolConfig();
        //最大连接数
        config.setMaxTotal(30);
        //最大空闲连接数
        config.setMaxIdle(10);
        //每次释放连接的最大数目
        config.setNumTestsPerEvictionRun(1024);
        //释放连接的扫描间隔（毫秒）
        config.setTimeBetweenEvictionRunsMillis(30000);
        //连接最小空闲时间
        config.setMinEvictableIdleTimeMillis(1800000);
        //连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放
        config.setSoftMinEvictableIdleTimeMillis(10000);
        //获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1
        config.setMaxWaitMillis(1500);
        //在获取连接的时候检查有效性, 默认false
        config.setTestOnBorrow(false);
        //在空闲时检查有效性, 默认false
        config.setTestWhileIdle(true);
        //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
        config.setBlockWhenExhausted(false);

        return config;
    }

    @Bean
    public JedisPool jedisPool(){
        return new JedisPool(jedisPoolConfig(), "47.99.174.254");
    }
}
